<<template>
    <Form>
        <slot></slot>
    </Form>
</template>

<script>

  export default {
       props:{
            model:{
                type:Object,
                required:true
            },
            rules:{
                type:Object
            }
        },
      provide(){
          return {
              MyForm:this
          }
      },
      methods:{
         async validate(fn){
              //调用所有的formItem的validator，返回一个Promise数组
              const tasks=this.fields.map(item=>item.validator())
              //获取所有结果统一处理
              const result= await Promise.all(tasks)
              const s=result.every((item)=>item==true)
              fn(s)
          }
      },
     created(){
         //缓存需要校验的表单项
         this.fields=[];
         this.$on("formItemAdd",item=>this.fields.push(item))
     }
  }
</script>